// 定义一个NativeFlat 工具类型，支持把数组类型拍平（扁平
// 化）。具体的使用示例如下所示：
// T extends Array<infer U>: 提取数组中的元素类型 U
type NaiveFlat<T extends any[]> = T extends Array<infer U>
  ? // 如果 U 是一个数组，则递归调用 NaiveFlat
    U extends any[]
    ? NaiveFlat<U>
    : U
  : // 如果输入不是数组，则返回 never
    never;

// 测试用例：
type NaiveResult = NaiveFlat<[["a"], [["b", "c"]], ["d"]]>;
